-- ToME - Tales of Maj'Eyal
-- Copyright (C) 2009, 2010, 2011, 2012 Nicolas Casalini
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
--
-- Nicolas Casalini "DarkGod"
-- darkgod@te4.org

local sex = game.player.female and "опоздала" or "опоздал"
local sex1 = game.player.female and "сделала" or "сделал"
local sex2 = game.player.female and "сохранила" or "сохранил"
local sex3 = game.player.female and "согласна" or "согласен"
local sex4 = game.player.female and "Я принесла ингридиенты для " or "Я принёс ингридиенты для "
local sex5 = game.player.female and "пришла" or "пришёл"
local sex7 = game.player.female and "подруга" or "друг"
local sex8 = game.player.female and "сама" or "сам"


local art_list = mod.class.Object:loadList("/data/general/objects/brotherhood-artifacts.lua")
local alchemist_num = 4
local other_alchemist_nums = {1, 2, 3}
local q = game.player:hasQuest("brotherhood-of-alchemists")
local final_reward = "TAINT_TELEPATHY"
local e = {
	{
	short_name = "brawn",
	name = "elixir of brawn",
	id = "ELIXIR_BRAWN",
	start = "brawn_start",
	almost = "brawn_almost_done",
	full = "elixir_of_brawn",
	full_2 = "elixir_of_stoneskin",
	full_3 = "elixir_of_foundations",
	poached = "brawn_poached",
	},
	{
	short_name = "stoneskin",
	name = "elixir of stoneskin",
	id = "ELIXIR_STONESKIN",
	start = "stoneskin_start",
	almost = "stoneskin_almost_done",
	full = "elixir_of_stoneskin",
	full_2 = "elixir_of_brawn",
	full_3 = "elixir_of_foundations",
	poached = "stoneskin_poached",
	},
	{
	short_name = "foundations",
	name = "elixir of foundations",
	id = "ELIXIR_FOUNDATIONS",
	start = "foundations_start",
	almost = "foundations_almost_done",
	full = "elixir_of_foundations",
	full_2 = "elixir_of_brawn",
	full_3 = "elixir_of_stoneskin",
	poached = "foundations_poached",
	},
}

--cond function for turning in non-final elixirs
--checks that player has quest and elixir ingredients, hasn't completed it yet, has started that elixir, and hasn't completed both other elixirs since that would make this the last one:
local function turn_in(npc, player, n) -- n is the index of the elixir we're checking on
	return q and q:check_ingredients(player, e[n].short_name, n) -- make sure we have the quest and the elixir's ingredients
	and not q:isCompleted(e[n].almost) and not q:isCompleted(e[n].full) --make sure we haven't finished the quest already
	and q:isCompleted(e[n].start) --make sure we've been given the task to make this elixir
	and not (q:isCompleted(e[n].full_2) and q:isCompleted(e[n].full_3)) --make sure we haven't already finished both the other elixirs, since that would make this the final one which requires a special dialog.
end

--cond function for turning in final elixir with index n
--checks that player has quest and elixir ingredients, hasn't completed it yet, has started that elixir, and both the other elixirs are done
local function turn_in_final(npc, player, n) -- n is the index of the elixir we're checking on
	return q and q:check_ingredients(player, e[n].short_name, n) -- make sure we have the quest and the elixir's ingredients
	and not q:isCompleted(e[n].almost) and not q:isCompleted(e[n].full) --make sure we haven't finished the quest already
	and q:isCompleted(e[n].start) --make sure we've been given the task to make this elixir
	and (q:isCompleted(e[n].full_2) and q:isCompleted(e[n].full_3)) --make sure the other two elixirs are made, thus making this the final turn-in
end

--cond function for turning in poached (completed by somebody besides you) elixirs
--checks that the player has the quest and elixir ingredients, hasn't turned it in, the task is complete anyway, the task has actually been started, and that it's been poached
local function turn_in_poached(npc, player, n) -- n is the index of the elixir we're checking on
	return q and q:check_ingredients(player, e[n].short_name, n) -- make sure we have the quest and the elixir's ingredients
	and not q:isCompleted(e[n].almost) --make sure we haven't turned it in already
	and q:isCompleted(e[n].full) --make sure that, even though we haven't turned it in, the elixir has been made for this alchemist
	and q:isCompleted(e[n].start) --make sure we've been given the task to make this elixir
	and q:isCompleted(e[n].poached)  --make sure this task has been poached
end

local function more_aid(npc, player)
	return not (q:isCompleted(e[1].full) and q:isCompleted(e[2].full) and q:isCompleted(e[3].full)) --make sure all the elixirs aren't already made
	--Next, for each of the three elixirs, make sure it's not the case that we're still working on it
	and not (q:isCompleted(e[1].start) and not q:isCompleted(e[1].full))
	and not (q:isCompleted(e[2].start) and not q:isCompleted(e[2].full))
	and not (q:isCompleted(e[3].start) and not q:isCompleted(e[3].full))
end

local function give_bits(npc, player, n) -- n is the index of the elixir we're checking on
	return q and q:check_ingredients(player, e[n].short_name) -- make sure we have the quest and the elixir's ingredients
	and q:isCompleted(e[n].start) --make sure we've started the task
	and not q:isCompleted(e[n].full) --... but not finished
end

local function empty_handed(npc, player, n) -- n is the index of the elixir we're checking on
	return q and q:check_ingredients(player, e[n].short_name, n) -- make sure we have the quest and the elixir's ingredients
	and q:isCompleted(e[n].start) --make sure we've started the task
	and not q:isCompleted(e[n].almost) --make sure we've not turned the stuff in before...
	and q:isCompleted(e[n].full)  --... and yet the elixir is already made (poached!)
end

--Make the alchemist's reaction to your turn-in vary depending on whether he lost.
local function alchemist_reaction_complete(npc, player, lose, other_alch, other_elixir)
	if lose == true then
		return ([[Проклятие. Ты ]]..sex..[[. %s уже закончил. Но, я думаю, ты ]]..sex1..[[ всё возможное, поэтому я заберу у тебя это и заплачу за труды.]]):format(other_alch)
	else
		return ([[Прекрасная работа! И, как вижу, ты всё ]]..sex2..[[ в тайне. Вдвойне приятно. Я так не радовался с тех пор, как успешно сварил одну очень сложную микстуру. До этого она несколько раз взорвалась. О, пока тебя не было, одна птичка напела мне, что %s смог создать %s. Он не должен успеть раньше меня!]]):format(other_alch, other_elixir)
	end
end

if not q or (q and not q:isCompleted(e[1].start) and not q:isCompleted(e[2].start) and not q:isCompleted(e[3].start)) then

-- Here's the dialog that pops up if the player has never worked for this alchemist before:
newChat{ id="welcome",
	text = [[#LIGHT_GREEN#*Тебе открывает дверь гном в измятой, перепачканной кольчуге.*#WHITE#
Любишь расчленять трупы и получать за это деньги?]],
	answers = {
		{"Конечно.", jump="ominous"},
		{"[уйти]"},
	}
}

newChat{ id="ominous",
	text = [[Святые мощи, я обожаю авантюристов. Я хотел стать одним из них, но она избила меня. Когда я сказал "она", то имел в виду "моя жена". Хар!]],
	answers = {
		{"Что ты предлагаешь?", jump="proposal"},
	}
}

newChat{ id="proposal",
	text = [[Я дам тебе список органов, которые нужно будет вырезать у мостров, ты пойдёшь и соберёшь их, после чего я состряпаю из этих ингридиентов кое-что ослепительное и меня примут в Братство алхимиков.]],
	answers = {
		{"Это похоже на план.", jump="help"},
	}
}

newChat{ id="help",
	text = [[Да, я разрабатываю прекрасные планы. И члены Братства, несомненно, заметят мои 'эликсиры'. И примут меня к себе, потому что захотят узнать рецепты. Теперь всё понятно?]],
	answers = {
		{"Я помогаю тебе вступить в Братство. Но какая от этого польза мне?", jump="competition"},
	}
}

newChat{ id="competition",
	text = [[О, тут всё просто. Конечно же, ты получишь по бутылке каждого напитка. Они помогут отрастить волосы на груди, и, может быть, удлинить ресницы и ногти. И если ты мне как следует поможешь, тебя ждёт настоящий праздник: может, ты станешь единственным в Мадж-Эйяле телепатом.]],
	answers = {
		{"Я "..sex3..".", jump="choice", action = function(npc, player) player:grantQuest("brotherhood-of-alchemists") end,},
		{"У меня сейчас нет на это времени."},
	}
}

newChat{ id="choice",
	text = [[И последнее. Кроме меня, на это место в Братстве претендуют несколько других алхимиков. И они не будут сидеть сложа руки пока мы здесь работаем, поэтому нужно всё сделать максимально быстро. Теперь скажи, с каим напитком ты мне поможешь сначала: Напиток силы, Напиток каменной кожи или Напиток основ? Или это эликисиры? Не напитки. Думаю, нужно привыкать называть правильно.]],
	answers = {
		{"Помочь сделать "..e[1].name..".", jump="list",
			cond = function(npc, player) return not game.player:hasQuest("brotherhood-of-alchemists"):isCompleted(e[1].full) end,
			action = function(npc, player)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.COMPLETED, e[1].start)
				game.player:hasQuest("brotherhood-of-alchemists"):update_needed_ingredients(player)
			end,
			on_select=function(npc, player)
				local o = art_list[e[1].id]
				o:identify(true)
				game.tooltip_x, game.tooltip_y = 1, 1
				game:tooltipDisplayAtMap(game.w, game.h, tostring(o:getDesc()))
			end,
		},
		{"Помочь сделать "..e[2].name..".", jump="list",
			cond = function(npc, player) return not game.player:hasQuest("brotherhood-of-alchemists"):isCompleted(e[2].full) end,
			action = function(npc, player)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.COMPLETED, e[2].start)
				game.player:hasQuest("brotherhood-of-alchemists"):update_needed_ingredients(player)
			end,
			on_select=function(npc, player)
				local o = art_list[e[2].id]
				o:identify(true)
				game.tooltip_x, game.tooltip_y = 1, 1
				game:tooltipDisplayAtMap(game.w, game.h, tostring(o:getDesc()))
			end,
		},
		{"Помочь сделать "..e[3].name..".", jump="list",
			cond = function(npc, player) return not game.player:hasQuest("brotherhood-of-alchemists"):isCompleted(e[3].full) end,
			action = function(npc, player)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.COMPLETED, e[3].start)
				game.player:hasQuest("brotherhood-of-alchemists"):update_needed_ingredients(player)
			end,
			on_select=function(npc, player)
				local o = art_list[e[3].id]
				o:identify(true)
				game.tooltip_x, game.tooltip_y = 1, 1
				game:tooltipDisplayAtMap(game.w, game.h, tostring(o:getDesc()))
			end,
		},
		{"[уйти]"},
	}
}

if npc.errand_given then
newChat{ id="list",
	text = [[Прекрасно, бери список. Да, ещё кое-что. Несколько парней уже ищут эти материалы, и я не играю в фаворитов. Если они принесут всё раньше тебя, значит, тебе не повезло. Поспеши.]],
	answers = {
		{"Уже ухожу."},
	}
}
else
newChat{ id="list",
	text = [[Прекрасно, бери список. Да, ещё кое-что. Несколько парней уже ищут эти материалы, и я не играю в фаворитов. Если они принесут всё раньше тебя, значит, тебе не повезло. Поспеши.

И последнее... хочу попросить тебя ещё кое о чём, хотя и не смогу за это заплатить.]],
	answers = {
		{"Хорошо, я посмотрю, что можно сделать.", jump="errand", action=function(npc, player) npc.errand_given = true end},
		{"Я здесь ради денег, а не ради поручений - у меня есть список и я буду работать с ним, дополнительную работу делай сам.", action=function(npc, player) npc.errand_given = true end},
	}
}
end

-- Quest is complete; nobody answers the door
elseif q and q:isStatus(q.DONE) then
newChat{ id="welcome",
	text = [[#LIGHT_GREEN#*Дверь заперта и никто не отвечает на твой стук.*#WHITE#]],
	answers = {
		{"[Уйти]"},
	}
}


else -- Here's the dialog that pops up if the player *has* worked with this alchemist before (either done quests or is in the middle of one):

local other_alch, other_elixir, player_loses, alch_picked, e_picked = q:competition(player, other_alchemist_nums)

newChat{ id="welcome",
	text = [[#LIGHT_GREEN#*Тебе открыл дверь гном в кольчуге.*#WHITE#
Ага, мой любимый авантюрист.]],
	answers = {
		-- If not the final elixir:
		{sex4..e[1].name..".", jump="complete",
			cond = function(npc, player) return turn_in(npc, player, 1) end,
			action = function(npc, player)
				q:on_turnin(player, alch_picked, e_picked, false)
			end,
		},
		{sex4..e[2].name..".", jump="complete",
			cond = function(npc, player) return turn_in(npc, player, 2) end,
			action = function(npc, player)
				q:on_turnin(player, alch_picked, e_picked, false)
			end,
		},
		{sex4..e[3].name..".", jump="complete",
			cond = function(npc, player) return turn_in(npc, player, 3) end,
			action = function(npc, player)
				q:on_turnin(player, alch_picked, e_picked, false)
			end,
		},

		-- If the final elixir:
		{sex4..e[1].name..".", jump="totally-complete",
			cond = function(npc, player) return turn_in_final(npc, player, 1) end,
		},
		{sex4..e[2].name..".", jump="totally-complete",
			cond = function(npc, player) return turn_in_final(npc, player, 2) end,
		},
		{sex4..e[3].name..".", jump="totally-complete",
			cond = function(npc, player) return turn_in_final(npc, player, 3) end,
		},

		-- If the elixir got made while you were out:
		{sex4..e[1].name..".", jump="poached",
			cond = function(npc, player) return turn_in_poached(npc, player, 1) end,
		},
		{sex4..e[2].name..".", jump="poached",
			cond = function(npc, player) return turn_in_poached(npc, player, 2) end,
		},
		{sex4..e[3].name..".", jump="poached",
			cond = function(npc, player) return turn_in_poached(npc, player, 3) end,
		},

		--Don't let player work on multiple elixirs for the same alchemist.
		--See comments in more_aid function above for all the gory detail
		{"Я "..sex5..", чтобы предложить дополнительную помощь.", jump="choice",
			cond = function(npc, player) return more_aid(npc, player) end,
		},
		{"[уйти]"},
	}
}

--Not final elixir:
newChat{ id="complete",
	text = alchemist_reaction_complete(npc, player, player_loses, other_alch, other_elixir),
	answers = {
		{"[Отдать ему органы монстров.]", jump="complete2",
			cond = function(npc, player) return give_bits(npc, player, 1) end,
			action = function(npc, player)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.COMPLETED, e[1].almost)
				q:remove_ingredients(player, e[1].short_name, 1)
			end
		},
		{"[Отдать ему органы монстров.]", jump="complete2",
			cond = function(npc, player) return give_bits(npc, player, 2) end,
			action = function(npc, player)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.COMPLETED, e[2].almost)
				q:remove_ingredients(player, e[2].short_name, 2)
			end
		},
		{"[Отдать ему органы монстров.]", jump="complete2",
			cond = function(npc, player) return give_bits(npc, player, 3) end,
			action = function(npc, player)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.COMPLETED, e[3].almost)
				q:remove_ingredients(player, e[3].short_name, 3)
			end
		},
--		{"Sorry, it seems I lack some stuff. I will be back."},
	}
}

--Final elixir:
newChat{ id="totally-complete",
	text = [[#LIGHT_GREEN#*Он радостно хлопает тебя по плечу.*#WHITE#
Ха-ха! Это последний! Стайр и Марус и этот проклятый отшельник могут сосать мою бороду! И моя жена тоже! ДА, Я ЗНАЮ, ЧТО ТЫ СЛЫШАЛА. Хорошая работа, ]]..sex7..[[. Давай их сюда.]],
	answers = {
		{"[Отдать ему органы монстров.]", jump="totally-complete2",
			cond = function(npc, player) return give_bits(npc, player, 1) end,
			action = function(npc, player)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.COMPLETED, e[1].almost)
				q:remove_ingredients(player, e[1].short_name, 1)
			end
		},
		{"[Отдать ему органы монстров.]", jump="totally-complete2",
			cond = function(npc, player) return give_bits(npc, player, 2) end,
			action = function(npc, player)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.COMPLETED, e[2].almost)
				q:remove_ingredients(player, e[2].short_name, 2)
			end
		},
		{"[Отдать ему органы монстров.]", jump="totally-complete2",
			cond = function(npc, player) return give_bits(npc, player, 3) end,
			action = function(npc, player)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.COMPLETED, e[3].almost)
				q:remove_ingredients(player, e[3].short_name, 3)
			end
		},
		--{"Sorry, it seems I lack some stuff. I will be back."},
	}
}

--Not final elixir:
newChat{ id="complete2",
	text = [[Мне нужен час на приготовление зелья. Никуда не уходи.]],
	answers = {
		{"[Ждать]", jump="complete3"},

	}
}

--Final Elixir:
newChat{ id="totally-complete2",
	text = [[Я бы пригласил тебя внутрь, но там моя жена, и я не хочу, чтобы она с тобой флиртовала.]],
	answers = {
		{"[Ждать]", jump="totally-complete3"},

	}
}

--Not final elixir:
newChat{ id="complete3",
	text = [[#LIGHT_GREEN#*В конце концов гном возвращается с флаконом.*#WHITE#
На вкус как моча урк-рока, но работа закончена.]],
	answers = {
		{"Спасибо. Я пойду.",
			cond = function(npc, player) return q and q:isCompleted(e[1].almost) and not q:isCompleted(e[1].full) end,
			action = function(npc, player)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.COMPLETED, e[1].full)
				q:reward(player, e[1].id)
				q:update_needed_ingredients(player)
			end
		},
		{"Спасибо. Я пойду.",
			cond = function(npc, player) return q and q:isCompleted(e[2].almost) and not q:isCompleted(e[2].full) end,
			action = function(npc, player)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.COMPLETED, e[2].full)
				q:reward(player, e[2].id)
				q:update_needed_ingredients(player)
			end
		},
		{"Спасибо. Я пойду.",
			cond = function(npc, player) return q and q:isCompleted(e[3].almost) and not q:isCompleted(e[3].full) end,
			action = function(npc, player)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.COMPLETED, e[3].full)
				q:reward(player, e[3].id)
				q:update_needed_ingredients(player)
			end
		},
	}
}

--Final elixir:
newChat{ id="totally-complete3",
	text = [[#LIGHT_GREEN#*В последний раз он выходит с флаконом и небольшим мешочком.*#WHITE#
Я собрал здесь немного полезных вещей, хотя до следующего утра они тебе не пригодятся. И будь осторожней с навыком телепатии, особенно если на стук в дверь тебе откроет моя жена. Хар!]],
	answers = {
		{"Спасибо. Я пойду.",
			cond = function(npc, player) return q and q:isCompleted(e[1].almost) and not q:isCompleted(e[1].full) end,
			action = function(npc, player)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.COMPLETED, e[1].full)
				q:reward(player, e[1].id)
				q:reward(player, final_reward)
				q:update_needed_ingredients(player)
				q:winner_is(player, alchemist_num)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.DONE)

			end
		},
		{"Спасибо. Я пойду.",
			cond = function(npc, player) return q and q:isCompleted(e[2].almost) and not q:isCompleted(e[2].full) end,
			action = function(npc, player)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.COMPLETED, e[2].full)
				q:reward(player, e[2].id)
				q:reward(player, final_reward)
				q:update_needed_ingredients(player)
				q:winner_is(player, alchemist_num)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.DONE)
			end
		},
		{"Спасибо. Я пойду.",
			cond = function(npc, player) return q and q:isCompleted(e[3].almost) and not q:isCompleted(e[3].full) end,
			action = function(npc, player)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.COMPLETED, e[3].full)
				q:reward(player, e[3].id)
				q:reward(player, final_reward)
				q:update_needed_ingredients(player)
				q:winner_is(player, alchemist_num)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.DONE)
			end
		},
	}
}

newChat{ id="choice",
	text = [[Да будут благословенны авантюристы. Что дальше?]],
	answers = {
		{"Помочь сделать "..e[1].name..".", jump="list",
			cond = function(npc, player) return not q:isCompleted(e[1].full) end,
			action = function(npc, player)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.COMPLETED, e[1].start)
				q:update_needed_ingredients(player)
			end,
			on_select=function(npc, player)
				local o = art_list[e[1].id]
				o:identify(true)
				game.tooltip_x, game.tooltip_y = 1, 1
				game:tooltipDisplayAtMap(game.w, game.h, tostring(o:getDesc()))
			end,
		},
		{"Помочь сделать "..e[2].name..".", jump="list",
			cond = function(npc, player) return not q:isCompleted(e[2].full) end,
			action = function(npc, player)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.COMPLETED, e[2].start)
				q:update_needed_ingredients(player)
			end,
			on_select=function(npc, player)
				local o = art_list[e[2].id]
				o:identify(true)
				game.tooltip_x, game.tooltip_y = 1, 1
				game:tooltipDisplayAtMap(game.w, game.h, tostring(o:getDesc()))
			end,
		},
		{"Помочь сделать "..e[3].name..".", jump="list",
			cond = function(npc, player) return not q:isCompleted(e[3].full) end,
			action = function(npc, player)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.COMPLETED, e[3].start)
				q:update_needed_ingredients(player)
			end,
			on_select=function(npc, player)
				local o = art_list[e[3].id]
				o:identify(true)
				game.tooltip_x, game.tooltip_y = 1, 1
				game:tooltipDisplayAtMap(game.w, game.h, tostring(o:getDesc()))
			end,
		},
		{"[уйти]"},
	}
}

if npc.errand_given then
newChat{ id="list",
	text = [[Вот перечень зверей, которые мне нужны. Удачной охоты!]],
	answers = {
		{"Я ухожу."},
	}
}
else
newChat{ id="list",
	text = [[Вот перечень зверей, которые мне нужны. Удачной охоты!

И последнее... хочу попросить тебя ещё кое о чём, хотя и не смогу за это заплатить.]],
	answers = {
		{"Хорошо, я посмотрю, что можно сделать.", jump="errand", action=function(npc, player) npc.errand_given = true end},
		{"Я здесь ради денег, а не ради поручений - у меня есть список и я буду работать с ним, дополнительную работу делай сам.", action=function(npc, player) npc.errand_given = true end},
	}
}
end

-- If the elixir got made while you were out:
newChat{ id="poached",
	text = [[Эээ, кажется, пока тебя не было, кто-то другой уже принёс нужные ингридиенты. Я не буду тебе платить! Прошу прощения, но я работаю по принципу 'первый пришёл, первый получил', это единственно правильная политика.]],
	answers = {
		{"Грр.",
			cond = function(npc, player) return empty_handed(npc, player, 1) end,
			action = function(npc, player)
				q:remove_ingredients(player, e[1].short_name, 1)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.COMPLETED, e[1].almost)
				q:update_needed_ingredients(player)
			end,
		},
		{"Грр.",
			cond = function(npc, player) return empty_handed(npc, player, 2) end,
			action = function(npc, player)
				q:remove_ingredients(player, e[2].short_name, 2)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.COMPLETED, e[2].almost)
				q:update_needed_ingredients(player)
			end,
		},
		{"Грр.",
			cond = function(npc, player) return empty_handed(npc, player, 3) end,
			action = function(npc, player)
				q:remove_ingredients(player, e[3].short_name, 3)
				player:setQuestStatus("brotherhood-of-alchemists", engine.Quest.COMPLETED, e[3].almost)
				q:update_needed_ingredients(player)
			end,
		},
	}
}

end

newChat{ id="errand",
	text = [[Дело в том, что одна из подруг мой жены пропала без вести. Селия, молодая ученица алхимика. К сожалению, она недавно потеряла мужа и буквально сошла с ума от горя. Каждый день она ходила на его могилу и однажды не вернулась назад. Лично я не думаю, что она ещё жива, они слишком сильно любили друг друга. Если у тебя будет время, загляни в мавзолей на востоке и проверь... ну, ты и ]]..sex8..[[ всё понимаешь.

Смерть делает с разумом человека странные вещи. Иногда он забывает, что на самом деле жив... Проследи, чтобы она была достойно похоронена - отнесись к ней уважением, ладно?]],
	answers = {
		{"Я посмотрю, что можно сделать.", action=function(npc, player)
			game:onLevelLoad("wilderness-1", function(zone, level)
				local g = game.zone:makeEntityByName(level, "terrain", "LAST_HOPE_GRAVEYARD")
				local spot = level:pickSpot{type="zone-pop", subtype="last-hope-graveyard"}
				game.zone:addEntity(level, g, "terrain", spot.x, spot.y)
				game.nicer_tiles:updateAround(game.level, spot.x, spot.y)
				game.state:locationRevealAround(spot.x, spot.y)
			end)
			game.log("Он показывает на карте местонахождение кладбища.")
			player:grantQuest("grave-necromancer")
		end},
	}
}

return "welcome"
